package zadania_domowe.zad_dom_7.pierwotny;

import java.util.StringTokenizer;

/**
 * Klasa jest implementacją "listy powiązanej" (Google)
 * Klasa zawiera dwa pola (pierwszy wyraz z listy oraz ostatni wyraz z listy)
 */
public class Zdanie {
    private Wyraz pierwszyWyraz;
    private Wyraz ostatniWyraz;

    /**
     * konstruktor klasy zdanie przyjmuje zdanie ktore odpowiednio podzieli
     * na wyrazy dzieki użyciu StringTokenizer
     */
    public Zdanie(String zdanie) {
        // obiket klasy String tokenizer potrafi dzielic zdanie na wyrazy
        StringTokenizer tokenizer = new StringTokenizer(zdanie);

        // podczas gdy mamy mamy kolejny wyraz w zdaniu wywolaj metode dodajWyrazDoListy() podając jej
        // jako parametr kolejny wyraz
        while (tokenizer.hasMoreTokens()) {
            add(tokenizer.nextToken());
        }
    }

    /**
     * Metoda dodaje do listy wyrazów kolejny wyraz
     */
    public void add(String wyraz) {
        // utorz obiekt nowyWyraz
        Wyraz nowyWyraz = new Wyraz(wyraz);
        // jesli lista wyrazów jest pusta to przypisz ze jej pierwszy element to nowyWyraz
        if (czyPusta()) {
            pierwszyWyraz = nowyWyraz;
        // jesli lista nie jest pusta to przypisz jako kolejny wyraz nowyWyraz
        } else {
            ostatniWyraz.setNastępnyWyraz(nowyWyraz);
        }
        // zapisz ze ostatni wyraz z listy to nowyWyraz
        ostatniWyraz = nowyWyraz;
    }

    // metoda sprawdzająca czy lista wyrazów jest pusta (jesli tak to zwraca true, jesli nie to false)
    public boolean czyPusta() {
        return pierwszyWyraz == null;
    }

    // wywoluje na pierwszym wyrazie metode show() pozniej pierszy wyraz wywoluje metode show z drugiego wyrazu
    // itd... ;)
    public void show() {
        pierwszyWyraz.show();
    }
}
